package com.jilian.mydemo.modul.user.repository;


import android.arch.lifecycle.LiveData;

import com.jilian.mydemo.api.Api;
import com.jilian.mydemo.base.BaseDto;
import com.jilian.mydemo.base.BaseVo;
import com.jilian.mydemo.base.CommonRepository;
import com.jilian.mydemo.common.dto.BannerListDto;
import com.jilian.mydemo.common.dto.CommiteDto;
import com.jilian.mydemo.common.dto.GoodsTypeDto;
import com.jilian.mydemo.common.dto.LeaveStatusDto;
import com.jilian.mydemo.common.dto.PartnerDescriptionDto;
import com.jilian.mydemo.common.dto.ProductDetailDto;
import com.jilian.mydemo.common.dto.ProductListDto;
import com.jilian.mydemo.common.dto.QuestionDto;
import com.jilian.mydemo.common.dto.StudyListDto;
import com.jilian.mydemo.common.dto.VideoArticlesDto;
import com.jilian.mydemo.common.dto.VideoArticlesListDto;
import com.jilian.mydemo.common.dto.LoginDto;
import com.jilian.mydemo.common.dto.MsgListDto;
import com.jilian.mydemo.common.dto.MyInfoDto;
import com.jilian.mydemo.common.dto.WrongAnwserDto;
import com.jilian.mydemo.common.vo.AppNoticeVo;
import com.jilian.mydemo.common.vo.AppUserInfoVO;
import com.jilian.mydemo.common.vo.ArticleDetailVo;
import com.jilian.mydemo.common.vo.BannerVo;
import com.jilian.mydemo.common.vo.BrowseArticleVO;
import com.jilian.mydemo.common.vo.CollectVo;
import com.jilian.mydemo.common.vo.ComminteListVo;
import com.jilian.mydemo.common.vo.GoodDetailVo;
import com.jilian.mydemo.common.vo.LeaveVo;
import com.jilian.mydemo.common.vo.PartnerApplyVo;
import com.jilian.mydemo.common.vo.PhotoVerifyVo;
import com.jilian.mydemo.common.vo.ProductListVo;
import com.jilian.mydemo.common.vo.SendSmsVo;
import com.jilian.mydemo.common.vo.LoginVo;
import com.jilian.mydemo.common.vo.ServiceAreasStrVo;
import com.jilian.mydemo.common.vo.UpdatePasswordVo;
import com.jilian.mydemo.common.vo.UserRegistVo;

import java.io.File;
import java.util.List;


public class UserRepository extends CommonRepository {
    /**
     * 登录
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto<LoginDto>> login(LoginVo vo) {
        return request(Api.login(vo)).send().get();
    }

    /**
     * 获取验证码
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto> sendSms(SendSmsVo vo) {
        return request(Api.sendSms(vo)).send().get();
    }


    /**
     * 注册
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto> regist(UserRegistVo vo) {
        return request(Api.regist(vo)).send().get();
    }

    /**
     * 实名认证卡口，根据返回状态进行跳转
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<Integer>> check() {
        return request(Api.check()).send().get();
    }

    /**
     * 个人中心 个人信息接口
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<MyInfoDto>> info() {
        return request(Api.info()).send().get();
    }

    /**
     * 修改密码
     *
     * @param
     * @return
     */
    public LiveData<BaseDto> updateUserPassword(AppUserInfoVO vo) {
        return request(Api.updateUserPassword(vo)).send().get();
    }

    /**
     * 修改手机号
     *
     * @param
     * @return
     */
    public LiveData<BaseDto> updateUserPhone(AppUserInfoVO vo) {
        return request(Api.updateUserPhone(vo)).send().get();
    }

    /**
     * 消息查询接口列表
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<MsgListDto>> query(AppNoticeVo vo) {
        return request(Api.query(vo)).send().get();
    }

    /**
     * 消息读接口
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto> read(AppNoticeVo vo) {
        return request(Api.read(vo)).send().get();
    }


    /**
     * 修改用户信息
     *
     * @param vo
     * @param fileList
     * @return
     */
    public LiveData<BaseDto> updateUserInfo(ServiceAreasStrVo vo, List<File> fileList) {
        return request(Api.updateUserInfo(vo, fileList, "*/*")).send().get();

    }

    /**
     * 实名认证
     *
     * @param vo
     * @param frontImg 正面
     * @param backImg  反面
     * @return
     */
    public LiveData<BaseDto> photoVerify(PhotoVerifyVo vo, List<File> frontImg, List<File> backImg) {
        return request(Api.photoVerify(vo, frontImg, backImg, "*/*")).send().get();

    }

    /**
     * 我的收藏
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<VideoArticlesListDto>> queryCollect(BaseVo vo) {
        return request(Api.queryCollect(vo)).send().get();
    }

    /**
     * 水工课堂列表
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<VideoArticlesListDto>> queryArticle(BaseVo vo) {
        return request(Api.queryArticle(vo)).send().get();
    }

    /**
     * 文章详情
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto<VideoArticlesDto>> queryAppArticleDetail(ArticleDetailVo vo) {
        return request(Api.queryAppArticleDetail(vo)).send().get();
    }


    /**
     * 配件商城
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<ProductListDto>> getAppProductList(ProductListVo vo) {
        return request(Api.getAppProductList(vo)).send().get();
    }

    /**
     * 获取商品类别
     *
     * @return
     */
    public LiveData<BaseDto<List<GoodsTypeDto>>> queryProductTypes() {
        return request(Api.queryProductTypes()).send().get();
    }


    /**
     * 收藏
     *
     * @param
     * @return
     */
    public LiveData<BaseDto> addCollect(BrowseArticleVO vo) {
        return request(Api.addCollect(vo)).send().get();
    }

    /**
     * 获取商品详情
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<ProductDetailDto>> getAppProductDetail(GoodDetailVo vo) {
        return request(Api.getAppProductDetail(vo)).send().get();
    }

    /**
     * 随机20道题
     *
     * @param
     * @return
     */
    public LiveData<BaseDto<List<QuestionDto>>> random() {
        return request(Api.random()).send().get();
    }

    /**
     * 学习手册
     *
     * @return
     */
    public LiveData<BaseDto<StudyListDto>> study() {
        return request(Api.study()).send().get();
    }


    /**
     * 提交答题结果
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto<CommiteDto>> submit(ComminteListVo vo) {
        return request(Api.submit(vo)).send().get();
    }

    /**
     * 查看错题
     *
     * @return
     */
    public LiveData<BaseDto<List<WrongAnwserDto>>> wrong() {
        return request(Api.wrong()).send().get();
    }


    /**
     * 重置密码
     *
     * @param vo
     * @return
     */
    public LiveData<BaseDto> updatePassword(UpdatePasswordVo vo) {
        return request(Api.updatePassword(vo)).send().get();
    }


    /**
     * 获取百万合作说明
     *
     * @return
     */
    public LiveData<BaseDto<PartnerDescriptionDto>> getPartnerDescription() {
        return request(Api.getPartnerDescription()).send().get();
    }

    /**
     * @param vo
     * @param businessLicense 营业执照（文件）
     * @param storeLogo       店铺招牌（文件）
     * @return
     */
    public LiveData<BaseDto> partnerApply(PartnerApplyVo vo, List<File> businessLicense, List<File> storeLogo) {
        return request(Api.partnerApply(vo, businessLicense, storeLogo, "*/*")).send().get();

    }


    /**
     * 获取合伙人申请状态
     *
     * @return
     */
    public LiveData<BaseDto<PartnerDescriptionDto>> getPartnerApply() {
        return request(Api.getPartnerApply()).send().get();
    }


    /**
     * 点击去接单掉该接口
     *
     * @return
     */
    public LiveData<BaseDto> clicked() {
        return request(Api.clicked()).send().get();
    }

    /**
     * 获取请假状态
     *
     * @return
     */
    public LiveData<BaseDto<LeaveStatusDto>> getLeaveStatus() {
        return request(Api.getLeaveStatus()).send().get();
    }

    /**
     * 取消接单 请假
     *
     * @return
     */
    public LiveData<BaseDto> leave(LeaveVo vo) {
        return request(Api.leave(vo)).send().get();
    }

    /**
     * 接单
     *
     * @return
     */
    public LiveData<BaseDto> takeOrder() {
        return request(Api.takeOrder()).send().get();
    }

    /**
     * 获取广告列表
     *
     * @return
     */
    public LiveData<BaseDto<BannerListDto>> getAppAdList(BannerVo vo) {
        return request(Api.getAppAdList(vo)).send().get();
    }


}
